export function antiShake(fn: () => void, time: number | undefined) {
  let timerObj: number | undefined = undefined; // 定时器对象
  return function () {
    // 重新计算时间: 清除定时器，启动新的定时器任务
    clearTimeout(timerObj);
    timerObj = setTimeout(function () {
      fn();
    }, time);
  };
}

export function throttle(fn: () => void, time: number | undefined) {
  let flag = true; // 开关变量, true打开，false关闭
  return function () {
    //判断开关变量flag是否打开,如果是关闭状态不向下执行
    if (!flag) return;
    // 关闭开关
    flag = false;
    setTimeout(() => {
      fn();
      flag = true; //打开
    }, time);
  };
}

export default { antiShake, throttle };
